package com.nari.ncps.screen.service.dryport;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nari.ncps.screen.entity.dryport.DryportProdoperGoodsSend;
import com.nari.ncps.screen.vo.dryport.FluxPlanVO;
import com.nari.ncps.screen.vo.dryport.GoodsSendVO;
import com.nari.ncps.screen.vo.wholeproduct.RailwayGoodsSendVO;

import java.util.List;

/**
 * <p>
 * 货物发送情况表 服务类
 * </p>
 *
 * @author xuesong
 * @since 2025-09-25
 */
public interface DryportProdoperGoodsSendService extends IService<DryportProdoperGoodsSend> {

    /**
     * 根据年份查询货物发送月度统计数据
     * @param year 年份
     * @return 月度统计数据列表
     */
    List<DryportProdoperGoodsSend> getMonthlyStatsByYear(Integer year);

    /**
     * 获取最新货物发送统计数据（最近12个月）
     * @return 最新月度统计数据列表
     */
    List<DryportProdoperGoodsSend> getLatestMonthlyStats();

    /**
     * 根据年月查询货物发送统计数据
     * @param year 年份
     * @param month 月份
     * @return 统计数据
     */
    List<DryportProdoperGoodsSend> getStatsByYearAndMonth(Integer year, Integer month);

    /**
     * 根据日期查询货物发送统计数据
     * @param year 年份
     * @param month 月份
     * @param day 日期
     * @return 统计数据
     */
    DryportProdoperGoodsSend getStatsByDate(Integer year, Integer month, Integer day);

    /**
     * 获取铁路货物发送年度统计情况
     * @param year 年份，如果为null则返回最近5年数据
     * @return 铁路货物发送年度统计列表
     */
    List<RailwayGoodsSendVO> getRailwayGoodsSendAnnual(Integer year);

    /**
     * 获取最近30天的货物发送统计数据（按日期从小到大排序）
     * @return 最近30天的统计数据列表
     */
    List<DryportProdoperGoodsSend> getLatest30DaysStats();
    
    /**
     * 获取货物发送周转情况VO（最近30天）
     * @param year 年份（可选）
     * @return 货物发送VO列表
     */
    List<GoodsSendVO> getGoodsSendStatistics(Integer year);

    /**
     * 获取货物发送周转情况VO（最近30天）
     * @param year 年份（可选）
     * @return 货物发送VO列表
     */
    List<FluxPlanVO> getGoodsSendNocoalPlan(Integer year);
}
